package terrforming.space.objects;

import javax.media.opengl.GL;
import javax.media.opengl.GL2;

/**
 * Сингулярность - точка, создаваемая курсором пользователя.
 * Создает центр гравитации
 */
public class Singularity extends CosmicObject implements Drawable{
    
    /** активен ли объект (клавиша нажата) */   
    private boolean active=false;
    
    /** была ли уже создана планета на этом клике? 
     * (чтобы не плодить кучу планет в одной точке) 
     */
    private boolean planetcreated=false;

    @Override
    public void draw(GL2 gl) {
        if (isActive()) {
            gl.glPushMatrix();
            gl.glTranslated(x, y, 0);
            gl.glBegin(GL.GL_TRIANGLE_FAN);
            gl.glColor3f(1f,0.8f,0);
            for(double d = 0; d <= 2 * 3.14; d += 0.01) {
              gl.glVertex2d(0.01*(3.0/4)*Math.cos(d), 0.01*Math.sin(d));
            }
            gl.glEnd();
            gl.glPopMatrix();
        }
    }
    
    /** является ли сейчас сингулярность активной (клавиша мыши нажата?) */
    public boolean isActive() {
        return active;
    }

    /** активировать сингулярность */
    public void activate() {
        this.active = true;
    }
    
    /** деактивировать сингулярность */
    public void deactivate() {
        planetcreated=false;
        this.active = false;
    }
    
    /** планета уже содавалась на этом клике? */
    public boolean isPlanetCreated(){
        return planetcreated;
    }
    
    /** планету создали */
    public void planetCreatingLock(){
        planetcreated=true;
    }
    
    public void planetCreatingUnlock(){
        planetcreated=false;
    }
    
    /** конструктор сингулярности 
     * устанавливаем массу и радиус
     */
    public Singularity(){
        m=50000;
        r=.03f;
    }

    @Override
    public void recalculate() {
        
    }
    
}
